﻿/*
 * 作者:张钿
 *
 * 修改信息：
 * 2025-02-24
 * 1. 新增getConfigColumn函数，用于根据参数读取对应的配置列
 * 2. 删除函数getCaseNumberColumn，getCaseTitleColumn，getTestStepColumn，getExpectResultColumn，getCaseVersionColumn，getTestLocationColumn，getIsaPhaseColumn，getTestTypeColumn
 * 3. 删除属性caseNumberColumn，caseTitleColumn，testStepColumn，expectResultColumn，caseVersionColumn，testLocationColumn，testTypeColumn，isaPhaseColumn
 *
*/





#ifndef CONFIGREADER_H
#define CONFIGREADER_H

#include <QObject>
#include <QJsonArray>
#include <QJsonObject>
#include <QStringView>





#define FILTER_CONDITION_KEY u8"输入表格筛选条件"
#define RELEATION_MAP_KEY u8"输入输出表格对应关系"
#define INDEX_SHEET_KEY u8"索引表"
#define INPUT_SPECIAL_PROCESS_KEY u8"输入文件特殊处理"
#define GENERATION_FILE_TEMPLATE_KEY u8"生成文件配置"
// #define HEADER_ROW_HEIGHT_KEY u8"表头行高配置"
// #define TAIL_ROW_HEIGHT_KEY u8"表尾行高配置"
// #define COLUMN_WIDTH_KEY u8"列宽配置"
#define FILE_NAME_SOURCE_COLUMN_KEY u8"用例名称列"
#define TEST_STEP_START_LINE_KEY u8"测试步骤起始行"
#define SINGLE_ROW_TEXT_HEIGHT_KEY u8"单行文本行高"
#define SINGLE_ROW_CHAR_SIZE_KEY u8"单行文本字符数"
#define PRE_CONDITION_POSITION_KEY u8"前提条件位置"
#define LOG_POSITION_KEY u8"测试日志位置"
#define PROCESS_COMPARE_KEY u8"比较"
#define PROCESS_SUFFIX_KEY u8"后缀"
#define PROCESS_VERSION_KEY u8"版本"
#define PROCESS_CHECK_KEY u8"勾选"



class ConfigReader : public QObject
{

    Q_OBJECT
public:
    explicit ConfigReader(QObject *parent = nullptr);

    QStringList readFileKeys(const QString& filePath);
    void readConfigByKey(const QString& key);
    QJsonObject getFilterCondition();
    // QJsonArray getCasePurpose();
    QJsonArray getPreparePos();
    // int getCaseNumberColumn();
    // int getCaseTitleColumn();
    // int getTestStepColumn();
    // int getExpectResultColumn();
    // int getCaseVersionColumn();
    // int getTestLocationColumn();
    // int getIsaPhaseColumn();
    // int getTestTypeColumn();
    // int getConfigColumn(QString configName, int index);
    // QJsonObject getCaseTemplateConfig();
    QJsonObject getIndexSheetConfig();
    QJsonObject getGenerateFileTemplateConfig();
    QJsonArray getInputSpecialProcessConfig(const QString& processName);
    QStringList getSpecialColList();                // 输入文件特殊处理

    // QJsonArray getTestType();
    // QJsonArray getHeadRowHeight();
    // QJsonArray getTailRowHeight();
    // QJsonArray getColWidth();
    QJsonArray getLogPos();
    QJsonObject getColumnMapping();
    int getSingleTextHeight();
    int getCharactorCountPerLine();



signals:

private:
    int singleTextHeight;
    int charactorCountPerLine;
    // int caseNumberColumn;
    // int caseTitleColumn;
    // int testStepColumn;
    // int expectResultColumn;
    // int caseVersionColumn;
    // int testLocationColumn;
    // int testTypeColumn;
    // int isaPhaseColumn;
    QJsonArray prepareArray;
    // QJsonArray headRowHeightArray;
    // QJsonArray tailRowHeightArray;
    // QJsonArray colWidthArray;
    QJsonObject columnMapping;
    QJsonArray logPosArray;
    QJsonObject jsonObj;
    QString filePath;
    QJsonObject filterCondition;
    QJsonObject m_IndexSheetConfig;
    QJsonObject generateFileTemplateConfigMapping;
    QJsonObject m_SpecialProcessConfig;
    // QJsonObject caseTemplateConfig;


};



#endif // CONFIGREADER_H
